namespace Hospital.API.Dto
{
    /// <summary>
    /// 工作流DTO
    /// </summary>
    public class WorkflowDto
    {
        /// <summary>
        /// 工作流ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 医生ID
        /// </summary>
        public int DoctorId { get; set; }

        /// <summary>
        /// 医生姓名
        /// </summary>
        public string? DoctorName { get; set; }

        /// <summary>
        /// 工作流状态
        /// </summary>
        public string Status { get; set; } = string.Empty;

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreatedTime { get; set; }

        /// <summary>
        /// 完成时间
        /// </summary>
        public DateTime? CompletedTime { get; set; }

        /// <summary>
        /// 审核人
        /// </summary>
        public string? Auditor { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remarks { get; set; }

        /// <summary>
        /// 工作流步骤列表
        /// </summary>
        public List<WorkflowStepDto> Steps { get; set; } = new List<WorkflowStepDto>();
    }

    /// <summary>
    /// 工作流步骤DTO
    /// </summary>
    public class WorkflowStepDto
    {
        /// <summary>
        /// 步骤ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 工作流ID
        /// </summary>
        public int WorkflowId { get; set; }

        /// <summary>
        /// 服务名称
        /// </summary>
        public string ServiceName { get; set; } = string.Empty;

        /// <summary>
        /// 审核状态
        /// </summary>
        public string AuditStatus { get; set; } = string.Empty;

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remarks { get; set; }

        /// <summary>
        /// 审核时间
        /// </summary>
        public DateTime? AuditTime { get; set; }

        /// <summary>
        /// 审核人
        /// </summary>
        public string? Auditor { get; set; }

        /// <summary>
        /// 步骤顺序
        /// </summary>
        public int StepOrder { get; set; }
    }

    /// <summary>
    /// 创建工作流请求DTO
    /// </summary>
    public class CreateWorkflowDto
    {
        /// <summary>
        /// 医生ID
        /// </summary>
        public int DoctorId { get; set; }

        /// <summary>
        /// 服务类型ID列表
        /// </summary>
        public List<int> ServiceTypeIds { get; set; } = new List<int>();
    }

    /// <summary>
    /// 更新工作流步骤请求DTO
    /// </summary>
    public class UpdateWorkflowStepDto
    {
        /// <summary>
        /// 步骤ID
        /// </summary>
        public int StepId { get; set; }

        /// <summary>
        /// 审核状态
        /// </summary>
        public string AuditStatus { get; set; } = string.Empty;

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remarks { get; set; }

        /// <summary>
        /// 审核人
        /// </summary>
        public string? Auditor { get; set; }
    }

    /// <summary>
    /// 工作流查询DTO
    /// </summary>
    public class WorkflowQueryDto
    {
        /// <summary>
        /// 医生ID
        /// </summary>
        public int? DoctorId { get; set; }

        /// <summary>
        /// 状态
        /// </summary>
        public string? Status { get; set; }

        /// <summary>
        /// 当前页数
        /// </summary>
        public int PageIndex { get; set; } = 1;

        /// <summary>
        /// 每页数量
        /// </summary>
        public int PageSize { get; set; } = 10;
    }
} 